Program Reconditioning: Avoiding Undefined Behaviour When Finding and Reducing Compiler Bugs

نویسندگان

چکیده

We introduce program reconditioning, a method for allowing generation and differential testing to be used find miscompilation bugs, test-case reduction simplify bug-triggering programs, even when (a) the programming language of interest features undefined behaviour (UB) (b) no tools exist detect avoid this UB. present two based on our reconditioning idea: GLSLsmith OpenGL Shading Language (GLSL), widely-used graphics programming, WGSLsmith WebGPU (WGSL), new web-based rendering. GLSL many UBs, but unlike languages such as C C++ them automatically. While WGSL specification very limited UB, early implementations do exhibit reasons initial implementation simplicity, making it challenging test quickly eliminate unrelated bugs. Thanks we show that allow applied compilers first time, despite unavailability UB detection techniques these languages. Through large campaign, have found 24 33 bugs in compilers, respectively. experiments showing is disabled, compiler leads high rate programs appear trigger actually just feature also novel approach managing floating-point roundoff error using implemented both WGSL.

برای دانلود باید عضویت طلایی داشته باشید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Finding and Avoiding Bugs in Enterprise Ontologies

We report on ten years of experience building enterprise ontologies for commercial clients. We describe key properties that an enterprise ontology should have, and illustrate them with many real world examples. They are: correctness, understandability, usability, and completeness. We give tips and guidelines for how best to use inference and explanations to identify and track down problems. We ...

متن کامل

Modeling Undefined Behaviour Semantics for Checking Equivalence Across Compiler Optimizations

Previous work on equivalence checking for synthesis and translation validation has usually verified programs across selected optimizations, disabling the ones that exploit undefined behaviour. On the other hand, modern compilers extensively exploit language level undefined behaviour for optimization. Previous work on equivalence checking for translation validation and synthesis yields poor resu...

متن کامل

Avoiding the Undefined by Underspecification

The first volume of Springer-Verlag's Lecture Notes in Computer Science appeared in 1973, almost 22 years ago. The field has learned a lot about computing since then, and in doing so it has leaned on and supported advances in other fields. In this paper, we discuss an aspect of one of these fields that has been explored by computer scientists, handling undefined terms in formal logic. Logicians...

متن کامل

When bugs meet cells

Early research into microbiological pathogenesis attempted to determine which microbial properties make micro-organisms pathogenic. Over time, however, a growing number of research projects began to focus on the intimate relationships between microbes and their hosts and, more precisely, on the consequences of infection for the cell biology of the host. This approach has brought together two tr...

متن کامل

Finding Concurrency Bugs In Java

Because threads are a core feature of the Java language, the widespread adoption of Java has exposed a much wider audience to concurrency than previous languages have. Concurrent programs are notoriously difficult to write correctly, and many subtle bugs can result from incorrect use of threads and synchronization. Therefore, finding techniques to find concurrency bugs is an important problem. ...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

ژورنال

عنوان ژورنال: Proceedings of the ACM on programming languages

سال: 2023

ISSN: ['2475-1421']

DOI: https://doi.org/10.1145/3591294